/*
 * @Author: Simon 1958058172@qq.com
 * @Date: 2025-08-07 14:31:58
 * @LastEditors: Simon 1958058172@qq.com
 * @LastEditTime: 2025-08-07 15:03:47
 * @FilePath: \java.1212\csdn\baozhuang\li05\Test.java
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
package csdn.baozhuang.li05;

public class Test {
    public static void main(String[] args) {
        String s1=new String("123");
        System.out.println(s1);//相当于输出s1.toString();
        s1="345";//我们只是创造了一个新的空间，改变了指向

        String str1="hello";
        String str2="hello";
        System.out.println(str1==str2);//true

        String str3=new String("!").intern();
        String str4=new String("!").intern();
        System.out.println(str3==str4);//true

        String str5=new String(",").intern();
        String str6=new String(",");
        System.out.println(str5==str6);//false -----不加intern(),则在堆内存中新建一个对象，不会从常量池中取


        //-----------------------------------------------------------------------
        //面试进阶问法
        String st1="a";
        String st2="b";
        String st3="ab";
        String st4="a"+"b";
        String st5=st1+st2;
        //问：st3==st4吗？
        System.out.println(st3==st4);//true -----------  +号链接的结果也被当做常量
        //问：st4==st5吗？
        System.out.println(st4==st5);//false-------------  但如果链接的是两个对象，则是false

        String st6=(st1+st2).intern();
        System.out.println(st4==st6);//true
    }
}
